﻿/*
 * Created by SharpDevelop.
 * User: CeCi
 * Date: 29/03/2014
 * Time: 02:49 p.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
using Gestión_UTN.util;

namespace Gestión_UTN.View.alta
{
    /// <summary>
    /// Description of AltaAlumno.
    /// </summary>
    public partial class AltaAlumno : Form
    {
        private static Gestión_UTN.bl.alumnobl createAlumno = Gestión_UTN.factories.blfactory.createAlumno();
        private static Gestión_UTN.bl.ciudadbl createCiudad = Gestión_UTN.factories.blfactory.createCiudad();

        public AltaAlumno()
        {
            //
            // The InitializeComponent() call is required for Windows Forms designer support.
            //
            InitializeComponent();

            //
            // TODO: Add constructor code after the InitializeComponent() call.
            //
        }

        private int dni;

        public int DNI
        {
            get { return dni; }
            set { dni = value; }
        }


        void BtnLimpiarClick(object sender, EventArgs e)
        {
            LimpiarForm();
        }

        private void LimpiarForm()
        {
            this.txtApellido.Clear();
            this.txtFecha.Clear();
            this.txtDireccion.Clear();
            this.txtDNI.Clear();
            this.txtNombre.Clear();
            this.cmbCiudad.Text = "Rojas";
            this.chkLegajo.Checked = false;
            this.txtLegajo.Clear();
            this.txtCorreoAuxiliar.Clear();
            this.txtCorreoPrincipal.Clear();
            this.txtTelAuxiliar.Clear();
            this.txtTelPrincipal.Clear();
        }

        void ChkLegajoCheckedChanged(object sender, EventArgs e)
        {
            if (this.chkLegajo.Checked == true)
            {
                this.txtLegajo.Enabled = true;
            }
            else
            {
                this.txtLegajo.Enabled = false;
            }
        }

        void AltaAlumnoLoad(object sender, EventArgs e)
        {
            dni = 0;

            this.txtLegajo.Enabled = false;

            this.cmbCiudad.Text = "Rojas";

            DataTable ciudades = createCiudad.FindAllCiudades();

            if (null != ciudades)
            {
                foreach (DataRow dr in ciudades.Rows)
                {
                    this.cmbCiudad.Items.Add(dr[1].ToString());
                }
            }
        }

        void BtnGuardarClick(object sender, EventArgs e)
        {
            try
            {
                if (Validar())
                {
                    dni = Convert.ToInt32(this.txtDNI.Text);

                    bo.Alumnobo existe = createAlumno.FindAlumnoByDNI(dni);

                    if (null == existe)
                    {
                        string nombre = this.txtNombre.Text;
                        string apellido = this.txtApellido.Text;
                        DateTime fecha = Convert.ToDateTime(this.txtFecha.Text);
                        string direccion = this.txtDireccion.Text;
                        string ciudad = this.cmbCiudad.Text;
                        string legajo = this.txtLegajo.Text;
                        string tel_principal = this.txtTelPrincipal.Text;
                        string tel_auxiliar = this.txtTelAuxiliar.Text;
                        string mail_principal = this.txtCorreoPrincipal.Text;
                        string mail_auxiliar = this.txtCorreoAuxiliar.Text;

                        bo.Alumnobo alu = new Gestión_UTN.bo.Alumnobo(dni, nombre, apellido,
                            fecha, direccion, ciudad, legajo, tel_principal, tel_auxiliar, mail_principal, mail_auxiliar);


                        bool ingresado = createAlumno.SaveAlumno(alu);

                        if (ingresado)
                        {
                            MessageBox.Show("Alumno Ingresado!", "Exito", MessageBoxButtons.OK, MessageBoxIcon.Information);

                            if (MessageBox.Show("¿Desea Ingresar Otro Alumno?", "Consulta", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes)
                            {
                                LimpiarForm();
                            }
                            else
                            {
                                this.Close();

                                this.Dispose();

                                DialogResult = System.Windows.Forms.DialogResult.OK;
                            }
                        }
                    }
                    else
                    {
                        MessageBox.Show("El Alumno ya se encuentra Registrado!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                }

            }
            catch (exceptions.blexception)
            {
                MessageBox.Show("Error al Intentar Guardar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error al Intentar Guardar!!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                Gestión_UTN.util.EscribirLog.escribirArchivo(ex.Message);
            }
        }

        private bool Validar()
        {
            bool checkApellido = false;
            bool checkDireccion = false;
            bool checkDNI = false;
            bool checkNombre = false;
            bool checkCiudad = false;
            bool checkTelefonoPrincipal = false;
            bool checkTelefonoAuxiliar = false;
            bool checkMailPrincipal = false;
            bool checkMailAuxiliar = false;
            bool checkFecha = false;

            if (!Validador.es_fecha(txtFecha))
            {
                errProv.SetError(txtFecha, "Formato: ##/##/####");
                checkFecha = false;
            }
            else
            {
                errProv.SetError(txtFecha, String.Empty);
                checkFecha = true;
            }

            if (!Validador.es_nombre(txtNombre))
            {
                errProv.SetError(txtNombre, "Sólo Letras");
                checkNombre = false;
            }
            else
            {
                errProv.SetError(txtNombre, String.Empty);
                checkNombre = true;
            }

            if (!Validador.es_nombre(txtApellido))
            {
                errProv.SetError(txtApellido, "Sólo Letras");
                checkApellido = false;
            }
            else
            {
                errProv.SetError(txtApellido, String.Empty);
                checkApellido = true;
            }

            if (!Validador.es_direccion(txtDireccion))
            {
                errProv.SetError(txtDireccion, "Sólo Letras y Números");
                checkDireccion = false;
            }
            else
            {
                errProv.SetError(txtDireccion, String.Empty);
                checkDireccion = true;
            }

            if (!Validador.es_numero(txtDNI))
            {
                errProv.SetError(txtDNI, "Sólo Números");
                checkDNI = false;
            }
            else
            {
                errProv.SetError(txtDNI, String.Empty);
                checkDNI = true;
            }

            if (!Validador.es_nombre(cmbCiudad))
            {
                errProv.SetError(cmbCiudad, "Sólo Letras");
                checkCiudad = false;
            }
            else
            {
                errProv.SetError(cmbCiudad, String.Empty);
                checkCiudad = true;
            }

            if (!Validador.es_numero(txtTelPrincipal))
            {
                errProv.SetError(txtTelPrincipal, "Sólo Números");
                checkTelefonoPrincipal = false;
            }
            else
            {
                errProv.SetError(txtTelPrincipal, String.Empty);
                checkTelefonoPrincipal = true;
            }

            if (!this.txtTelAuxiliar.Text.Equals(""))
            {
                if (!Validador.es_numero(txtTelAuxiliar))
                {
                    errProv.SetError(txtTelAuxiliar, "Sólo Números");
                    checkTelefonoAuxiliar = false;
                }
                else
                {
                    errProv.SetError(txtTelAuxiliar, String.Empty);
                    checkTelefonoAuxiliar = true;
                }
            }
            else
            {
                checkTelefonoAuxiliar = true;
            }

            if (!Validador.es_email(txtCorreoPrincipal))
            {
                errProv.SetError(txtCorreoPrincipal, "Formato: ####@####.###");
                checkMailPrincipal = false;
            }
            else
            {
                errProv.SetError(txtCorreoPrincipal, String.Empty);
                checkMailPrincipal = true;
            }

            if (!this.txtCorreoAuxiliar.Text.Equals(""))
            {
                if (!Validador.es_email(txtCorreoAuxiliar))
                {
                    errProv.SetError(txtCorreoAuxiliar, "Formato: ####@####.###");
                    checkMailAuxiliar = false;
                }
                else
                {
                    errProv.SetError(txtCorreoAuxiliar, String.Empty);
                    checkMailAuxiliar = true;
                }
            }
            else
            {
                checkMailAuxiliar = true;
            }

            return (checkApellido && checkCiudad && checkDireccion & checkDNI
                    && checkMailAuxiliar && checkNombre && checkTelefonoAuxiliar
                    && checkFecha && checkTelefonoPrincipal && checkMailPrincipal);
        }

        private void btnCiudad_Click(object sender, EventArgs e)
        {
            AltaCiudad ciu = new AltaCiudad();
            ciu.FormClosed += new FormClosedEventHandler(ciu_FormClosed);
            ciu.Show();
        }

        void ciu_FormClosed(object sender, FormClosedEventArgs e)
        {
            DataTable ciudades = createCiudad.FindAllCiudades();

            if (null != ciudades)
            {
                this.cmbCiudad.Items.Clear();

                foreach (DataRow dr in ciudades.Rows)
                {
                    this.cmbCiudad.Items.Add(dr[1].ToString());
                }
            }
        }
		
		void AltaAlumnoFormClosed(object sender, FormClosedEventArgs e)
		{
			DialogResult = System.Windows.Forms.DialogResult.OK;
		}
    }
}
